Commit Graph

60 Commits

Author SHA1 Message Date
Lephenixnoir 7a43c1253d
fxg1a: always add a sensible internal name
The internal name is required to exist and have a certain format for the
add-in to appear in the main menu; this should be enforced at the lowest
possible level to avoid unpleasant surprises.

This change defaults the internal name to essentially @INTERNAL, where
the letters of INTERNAL are the upper-case variables of every letter
found in the standard name (up to 7).
2021-01-14 11:07:01 +01:00
Lephenixnoir 94e1dd4da9
change install to include fxSDK CMake files 2021-01-12 19:01:19 +01:00
Lephenixnoir ee7c5d63ca
(small cleanup) 2021-01-12 18:53:32 +01:00
Lephenixnoir 431633612f
rewrite configure script 2021-01-11 22:23:00 +01:00
Lephenixnoir 7a4e5cde3b
fxsdk: move default project.cfg out of fxsdk.sh 2021-01-11 21:49:14 +01:00
Lephenixnoir c9b1db8221
fxsdk: remove the WIP command-line interface
The fxSDK will no longer specify the final values for these parameters,
leaving them to the user in CMakeLists.txt or project.cfg, as reasonable
defaults are good enough.
2021-01-11 21:29:04 +01:00
Lephenixnoir 42f2b5c175
fxconv: support metadata discovery in fxconv-metadata.txt
This change adds a new way for fxconv to discover metadata for file
conversions. This complements the existing mechanism of passing
parameters on the command-line.

The new mechanism activates when fxconv is called without a type
argument. Type information and metadata are searched in an
fxconv-metadata.txt file in the same folder as the resource. The
metadata file lists parameters, with some additional flexibility enabled
by the use of wildcards.

This way of declaring will replace command-line argument passing, which
currently read parameters from the unreadable and not-so-maitainable
project.cfg file. Both the GNU make and CMake build systems should use
it in the future. The current way is still supported only for older
projects and one-shot conversions outside of projects.
2021-01-11 19:21:04 +01:00
Lephenixnoir 0d6a7728a1
fix return code for build-* and -s option
No idea how that slipped in there, damn.
2021-01-07 11:50:01 +01:00
Lephenixnoir fefff0637a
add __pycache__ and .vscode to the default .gitignore 2021-01-04 13:45:56 +01:00
Lephenixnoir 203572b2af
fxsdk: add a sensible .gitignore when creating projects 2020-12-30 20:58:37 +01:00
Lephenixnoir f461c08a17
fxconv: introduce an ObjectData interface to avoid assembly
ObjectData is a stream-like object that accepts bytes, bytearrays,
references to external variables and references to other bundled data to
create structures with pointers without having to write assembly.

Internally ObjectData unfolds into static data and an assembly
instruction. Existing assembly support remains fully compatible.

* Added an ObjectData interface to ease reference generation
* Ported topti to ObjectData (instead of assembly)
* Ported libimg_fx and libimg_cg to ObjectData (idem)
2020-12-22 14:51:43 +01:00
Lephenixnoir f11c70aac4
fxsdk: change INCLUDE flags to support folders inside GCC
Useful for OpenLibm as it is installed inside an [openlibm] folder but
needs to be included directly as it uses #include without the openlibm/
part.
2020-10-24 18:54:16 +02:00
Lephenixnoir ee9c459c69
fxconv: add custom conversions
Custom conversions can be used by:
* Providing a converters.py in the main directory with a convert()
  function
* Specifying --custom on the fxconv command-line or using a subfolder or
  assets-{fx,cg} unused by standard fxconv
2020-10-23 13:05:50 +02:00
Lephenixnoir e3af6a5d4b
fxconv: add character spacing in topti fonts
Adds a new parameter "char-spacing" (default: 1) to change character
spacing for fonts rendered with topti.
2020-10-05 16:12:34 +02:00
Lephenixnoir 74b0bfaba1
fxsdk: don't use basename -s for busybox compatibility 2020-09-22 15:36:28 +02:00
Lephenixnoir cf12d5cfd1
fxsdk: disable warning about missing field initializers 2020-08-14 18:48:58 +02:00
Lephenixnoir 66d88bef7a
fxconv: better support for indexed images
Indexed images don't have an alpha channel, so the detection of
transparent pixels in fxconv failed. This change forces a conversion of
indexed images to RGBA to properly handle this.
2020-07-16 15:42:23 +02:00
Lephenixnoir 84f77c3136
fxconv: support Unicode fonts
This commit adds the Unicode input feature where fonts are defined by a
set of block files under a common directory.
2020-07-14 15:29:41 +02:00
Lephenixnoir 77c277721f
fxconv: support Unicode in topti fonts (WIP)
This commit changes the output structure of topti to a format that
supports arbitrary Unicode blocks, but still only accepts the fixed set
of charsets that was defined before.
2020-07-14 12:25:39 +02:00
Lephenixnoir bd49e9506e
fxconv: fix temporary files not being removed 2020-07-14 12:20:50 +02:00
Lephenixnoir 66e2f8429c
fxsdk: update starter's main.c for changes in dtext() 2020-07-14 12:20:49 +02:00
Lephenixnoir 822b5107e5
fxconv: expose Area and Grid in the API 2020-07-14 12:20:49 +02:00
Lephenixnoir f11f6929b4 Merge pull request 'fxconv API accepts PIL.Image.Image' (#4) from Darks/fxsdk:master into master 2020-05-30 15:35:13 +02:00
Darks b80f2a117a
fxconv API accepts PIL.Image.Image 2020-05-30 15:27:58 +02:00
Lephenixnoir ce78d4814c
fxconv: add support for script mode (-s) 2020-05-30 12:17:06 +02:00
Lephenixnoir c9dd9fad18
fxconv: add support for libimg images on fx-9860G 2020-03-15 12:11:32 +01:00
Lephenixnoir c79b3b1a9d
fxconv: add suport for libimg images and deprecate --image
This commit introduces the libimg image format, selected with the option
type:libimg-image. To avoid confusion with the bopti image format,
options -i and --image are now deprecated and should be replaced with
--bopti-image or type:bopti-image. The fxSDK Makefile has been updated
accordingly.

To support the construction of a structure that contains a pointer in
fxconv, an assembly-code feature has been added. The structure itself is
assembled with as and then linked with the data proper. This allows the
structure to reference the data by name and have the pointer calculated
by ld at link time.
2020-03-11 19:37:27 +01:00
Lephenixnoir b86b96aa4a
fxsdk: split additional libs into LIBS_FX and LIBS_CG
This is because several libraries have separate binaries, and so are
linked with different command-line arguments, just like gint is linked
with -lgint-fx on one side and -lgint-cg on the other.
2020-03-10 22:39:25 +01:00
Lephenixnoir eeeb0fa6b1
fxos: remove fxos from this repository
The tool is now hosted on its own repository Lephenixnoir/fxos.
2020-02-19 23:33:14 +01:00
Lephenixnoir b29eea1df0
build: fix a mising directory requirement 2020-02-19 23:22:11 +01:00
Lephenixnoir 3598f7c387
fxconv: implement support for the p4 and p8 profiles 2020-02-19 22:26:29 +01:00
Lephenixnoir 7d31294dc6
build: rewrite PREFIX in fxsdk.sh at compile-time
This makes it possible to change PREFIX at the last minute when running
install, effectively installing the files into a false packaging root
while retaining the same contents as if installed normally.
2020-02-19 22:26:29 +01:00
Lephenixnoir e66035da44 fxsdk: use sh-elf by default in project.cfg 2019-11-29 10:46:22 +01:00
Lephenixnoir 7cc4199342
fxconv: be even smarter with toolchain/arch detection 2019-09-12 18:20:14 +02:00
Lephenixnoir 15712b4f5b
fxsdk: add an option to choose add-in output path 2019-09-12 15:38:15 +02:00
Lephenixnoir 46b19bab62
fxsdk: new build system 2019-09-12 14:34:26 +02:00
Lephenixnoir d74785d34d
fxconv: add toolchain/arch/section command-line parameters
New parameters are:
* --toolchain: specify the target triplet (eg. "sh3eb-elf")
* --arch: specify the binary architecture (eg. "sh3")
* --section: specify the output section (eg. ".rodata")
2019-09-09 09:18:59 +02:00
Lephenixnoir 4f145cb202
fxsdk: add assembler compilation rules 2019-09-08 22:16:54 +02:00
Lephe 627fe14290
fxsdk: add update command and fix LD flag order 2019-09-03 23:23:24 +02:00
Lephe e1ddf0f452 fxconv: code review and color image conversion
This change enhances the style of fxconv by using more classes and
generally more Pythonic constructions.

It also introduces image conversion for fx-CG 50, requiring the use
of --fx or --cg to specify the target machine with -i. The default
is set to --fx to maintain compatibility with older Makefiles.
2019-08-04 14:05:59 +02:00
Lephe bf2eff80d2 vocabulary and formatting 2019-08-04 14:03:50 +02:00
Lephe d022755c2a fxsdk: fix the source selection wildcard
Turns out make doesn't have /**/. Whatever.
2019-07-21 13:22:27 -04:00
Lephe c11003eead fxsdk: detect source files recursively 2019-07-21 12:41:48 -04:00
Lephe fae60c518c default project: fix stupidity (#2) 2019-07-05 08:54:29 -04:00
Lephe 67e80fc081 default project: use the short color names (#2) 2019-07-05 08:17:23 -04:00
Lephe 14bef439ab fxsdk fxconv: various improvements 2019-07-03 13:49:48 -04:00
Lephe f8dc830adc fxconv: proportional fonts
Lost commit.
2019-07-01 10:45:58 -04:00
Lephe dc58a4a036 add a README.md file 2019-06-29 17:29:45 -04:00
Lephe ab3a9cd274 fxos: don't assume __VA_OPT__ is supported 2019-06-29 14:06:00 -04:00
Lephe 9be34ef9e5 make: change options for POSIX/Mac OS compatibility 2019-06-29 14:05:54 -04:00