Commit graph

82 commits

Author SHA1 Message Date
Hannes Mann 04026967c4 Mostly complete audio decoding
* OpenRayman can now fully decode .apm (Ubisoft? IMA ADPCM) audio used by Rayman 2 for music.
* APM audio is fully preseved and encoded into FLAC audio to ease editing with external programs (e.g. Audacity)
* Support for .bnm (audio banks with PCM and IMA ADPCM audio) is underway. This is only commited to get the online GitHub repo up to date.
* The data extractor is now threaded (not fully, it simply runs linearly in another thread)
* The data extractor now has a GUI progress dialog showing some information to the user (IProgressDialog on Win32, GTK3 on Linux)
* Various minor changes and bugfixes
2016-08-14 22:33:53 +02:00
Hannes Mann bd79221104 Improve Android activity 2016-07-26 06:56:58 +02:00
Hannes Mann 2ebd50db4f Add Android project
I have no idea what i'm doing ¯\_(ツ)_/¯
The project currently includes a game chooser activity.
The plan is to have this on the desktop release too, where games can be chosen and added in a list.
(i don't know what will happen to rayman2_openrayman then though, i plan to support more than just Rayman 2)
2016-07-26 06:23:49 +02:00
Hannes Mann 961a144d46 Add a basic game controller and basic GL wrappers. 2016-07-26 05:52:46 +02:00
Hannes Mann 0a9d60b210 Literally unusable 2016-07-07 08:36:40 +02:00
Hannes Mann d7146fec3a Oops 2016-07-07 08:35:51 +02:00
Hannes Mann 871b0cb616 Add a bit of a warning when extracting textures 2016-07-07 08:33:50 +02:00
Hannes Mann d5b265877a Edit documentation to reflect changes in storage path 2016-07-07 08:32:00 +02:00
Hannes Mann 1c511791ef Create the base game in storage_path() instead of data_path()
This is needed in the future if the engine is install into /usr/(bin, games) on linux or Program Files on windows
2016-07-07 08:27:19 +02:00
Hannes Mann 816a143890 Refactoring, lots of refactoring
* Split OpenRayman into two parts (openrayman and libopenrayman)
  libopenrayman is licensed under LGPLv3
* dsb_interpreter -> dsb_script
  gf_converter -> gf_texture
  This means that all currently available formats share a mostly common interface
  (specify stream via constructor, check if the file is valid via valid()
   and/or extract/decompile via a function returning bool)
* Since all formats can only be created via an std::istream,
  libopenrayman includes two helper stream functions in openrayman::common
  These are in_mem_(i/o)stream and encoded_stream
  in_mem stream read and write to a block of memory (can be created from vector/char*)
  encoded_streams take an existing stream and decodes data after reading it from the original stream
* Some small refactoring to other parts of the engine
2016-07-07 08:16:48 +02:00
Hannes Mann 0e548c8d52 Fix gf conversion (TODO)
Adding this now, will do it tomorrow
2016-07-02 04:38:16 +02:00
Hannes Mann 6f9e0e508e High res icon
128x128 baby
Found in Textures.cnt at /textures_objets/diver/polochus_ico_nz.gf
2016-07-02 04:35:56 +02:00
Hannes Mann e71a336693 Big changes
* OpenRayman can now read and extract from CNT archives (thanks Szymski/Szymekk!). Check --help for more information.
  In the future this, along with other functions, will be exported in a library called "libopenrayman". The plan
  is for libopenrayman to be able to read, inspect and extract all relevant files from the Rayman 2 engine.
  libopenrayman should be licensed as LGPL, compared to GPL for OpenRayman.
* OpenRayman can now, naturally, also read and convert GF files (CNT files are archives full of textures).
* OpenRayman no longer includes a DSB interpreter, and the decompiler has significantly changed.
  Only parts of the DSB that we need are now decompiled. Instead of direct decompilation into a .odsb,
  the decompiler produces several .json files that define the same information as the DSB in a much more
  human/mod friendly fashion.
* Some minor GTK and engine related changes.
2016-07-02 04:24:58 +02:00
Hannes Mann dfdb375801 Interpret most known instructions 2016-06-28 00:52:06 +02:00
Hannes Mann 447cc2a672 Use Release for building
I had switched, and i know you're supposed to do that via e.g. GUI, but im lazy
2016-06-27 23:19:26 +02:00
Hannes Mann c6664a0a4a Use Google Docs for documentation
Google Docs is more flexible
2016-06-27 23:17:57 +02:00
Hannes Mann ae50ccf7f6 Add basic DSB interpreter
We might need to replace this with something more sophisticated if some scripts use more flow control (e.g. if, while)
2016-06-27 23:14:12 +02:00
Hannes Mann ff22900319 Finish DSB decompiler
The decompiler can now decompile all files in Rayman 2/Data
Still need to figure out some unknowns (0x20, 0x6e, sound banks)
2016-06-21 01:55:49 +02:00
Hannes Mann 3dee71a5f6 Add Error.log from demo run 2016-06-20 05:31:49 +02:00
Hannes Mann d2a4f6d5b5 Add more sections to the dsb decompiler 2016-06-20 05:05:31 +02:00
Hannes Mann ce39ade17f Start working on decompilation process
Can decompile part of .dsbs for now, and it can decode files
2016-06-19 03:23:02 +02:00
Hannes Mann 4e49fb25cf Improve documentation formatting 2016-06-16 04:27:52 +02:00
Hannes Mann 5de095de75 Add documentation for some of the formats
This could not have been done without the amazing https://github.com/szymski/Rayman2Lib. (i have not verified if it works, it might be crap)
2016-06-16 04:25:48 +02:00
Hannes Mann 26c6e69844 Add a folder for future documentation 2016-06-16 03:37:28 +02:00
Hannes Mann f5f3044a26 Fix windows support 2016-06-16 00:56:11 +02:00
Hannes Mann 72f1910585 Fix typo 2016-06-15 19:53:35 +02:00
Hannes Mann 11ff4b30fb Add rebindable keyboard keys 2016-06-15 18:16:25 +02:00
Hannes Mann c277fb918d Add SDL_GameController support 2016-06-15 16:51:05 +02:00
Hannes Mann 1ed79727cb Better solution for SDL (endianness) 2016-06-15 16:12:45 +02:00
Hannes Mann b88a45a9e0 Fix window icon with SDL 2016-06-15 16:09:32 +02:00
Hannes Mann 5d6803b59f Switch from GLFW to SDL2
SDL2 is better supported and has a great game controller api
Wont build on Windows right now
2016-06-15 05:06:21 +02:00
Hannes Mann 3fffccf665 Add a game class for mod support
This commit adds a game class, which is a collection of files that can depend on other files.
The base game "rayman2" contains all files required for the game, and they can then be overriden by games that depend on it.
OpenRayman will use this for editing menus (adding settings) and possibly other things.
All mods should target "rayman2_openrayman".
2016-06-15 03:55:52 +02:00
Hannes Mann 96bba9bf03 Replace info.json with something more appropriate for the games (mod) system 2016-06-15 02:32:18 +02:00
Hannes Mann be3c5ee953 Export FPS from engine 2016-06-14 21:27:03 +02:00
Hannes Mann c92759a9b8 Tweak command line output 2016-06-14 04:41:32 +02:00
Hannes Mann 17cc6b3483 Add --convert-data command line option 2016-06-14 04:37:33 +02:00
Hannes Mann 012f0035f9 G++ on Windows uses standard main(int argc, char** argv)
We need the arguments in the future for converting the Rayman data folder (--convert-data?)
Converting the data folder will allow for easier modding
2016-06-14 04:34:15 +02:00
Hannes Mann 4d51c8173d Complete timing functions 2016-06-14 04:29:23 +02:00
Hannes Mann 4f53002fd8 Move some more variables into info.json 2016-06-13 18:34:37 +02:00
Hannes Mann 4efa463dc1 Add config and static info file 2016-06-13 18:26:03 +02:00
Hannes Mann 2e6c7faefb Add basic delta timing
Will probably need fixed (60fps) updates and interpolation (idk if Rayman 2 uses that)
We need a config file for vsync and locked fps
2016-06-13 17:20:59 +02:00
Hannes Mann fd9f68e4f8 Add keyboard mappings to N64 controller
These should be accurate to the original PC game
The plan is to make these rebindable
2016-06-13 17:06:13 +02:00
Hannes Mann 8187541233 Add standalone input provider
Also fix const correctness, improve documentation and other tweaks
2016-06-13 05:18:59 +02:00
Hannes Mann 7875b205cf Add input commands and improve documentation 2016-06-13 04:14:04 +02:00
Hannes Mann dd76a33821 Add input commands for additional actions such as fullscreen 2016-06-13 03:59:36 +02:00
Hannes Mann f4b6006019 Add JSON library 2016-06-13 01:29:50 +02:00
Hannes Mann becce1b1f2 Remove build_win
oops
2016-06-13 00:19:33 +02:00
Hannes Mann 240c485b5d Small fix for Windows 2016-06-13 00:18:11 +02:00
Hannes Mann 6d8893f65d Add input_state structure 2016-06-12 22:33:35 +02:00
Hannes Mann fc8255d366 ... 2016-06-12 21:56:23 +02:00