forked from uli/huc
-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
105 lines (89 loc) · 4.09 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
* This is a work in progress. *
This is a substantially improved version of the HuC PC Engine C development
toolkit. The following features have been added on top of HuC release 3.21:
A. Toolchain features
1. Language support
- ANSI-style function declarations, including return types and function
prototypes (typing is not enforced)
- struct and union support (adapted from SmallC-85)
- anonymous structures and "typedef"
- support for signed and unsigned scalars
- support initialization of
- scalars (global, automatic local, and static local)
- arrays and compound types (constant and variable globals and static
locals)
- constant char pointers with string constants
- type casting (except struct pointers)
- void pointers
- preprocessor features:
- function-like macros (i.e. macros with arguments)
- #if and #elif directives
- macro definition in function bodies
- heap allocator (malloc() / free())
- C++-style comments
- support for function calls in argument lists of fastcall functions (e.g.
"memcpy(a, b, strlen(b) + 1);")
- support declaration of fastcall functions through prototypes instead of
pragmas
- labels and "goto"
2. Performance and code size improvements
- "small stack" and "no recursion" options that cut down code size
and improve performance when these features are not needed
- numerous optimizations of generated code, helper functions, and macros
- reduction of space wasted in partially filled banks (Artemio Urbina)
3. Quality assurance
- automated test suite adapted from snes-sdk and extended to more than 470
test cases; supports verification of screen output
- complete toolchain fixed to work on 64-bit host systems
- tested and fixed for big-endian and 32-bit systems
- fixed to work on Mac OS X (tested on PowerPC) and Cygwin
- more than 70 bugs fixed in various components
- reformatted all assembler files to make them more readable and
maintainable
- many tools had their code formatting made more consistent and have
received uncrustify config files to keep them straight
4. Other enhancements
- support for more than one input file
- "library" support that includes C files from the include path
- default #include paths
- #incasm directive for seamless inclusion of data files in assembler format
with user-definable page mapping (useful with SimpleTracker and Squirrel)
- massive reduction of C namespace pollution by assembler libraries; things
like "int dx;" don't fail anymore...
Among the limitations that still exist and may cause problems:
- no support for initialization of:
- variable pointers
- pointers using array syntax (e.g. "const char *foo = {1, 2, 3};")
- arrays using string constants (e.g. "const char foo[] = "abc";")
- variable arrays with unspecified sizes (e.g. "int foo[] = ...")
- automatic local arrays (static ones work)
- no passing or returning of structures by value (pointers work)
- no type casting to struct pointers
- no floating point support
- no anonymous structs
There are also a couple more absent features that are not so likely to be
missed:
- no local union or struct _types_ (not variables)
- sizeof does not permit dereferencing ("sizeof(*a)")
- no bit fields
B. Included libraries
- HuC PSG driver removed except for initialization routine; it was missing
the part that, you know, makes sounds...
- "SimpleTracker" PSG driver implemented in C
- added SuperGrafx and Arcade Card libraries by Tomaitheous
- more consistent joypad button defines (as provided by the assembler)
C. Tools
- mod2mml implementation derived from Zeograd's unfinished tool that
produces SimpleTracker binary or Squirrel MML files from Protracker MOD
files:
- auto-detection of note length from sample size and pitch
- automated extraction of custom waveforms from samples
- partial auto-detection of volume envelopes
- user-definable mapping of waveform and percussion instruments
- per-instrument transposition and volume control
- MML compiler from Develo CD
- pceas updated to version 3.22
- pceas symbol table rearranged to allow easier sorting by address
- Develo tool ported to Linux (UNTESTED)
NEW:
added 8bpp uncompressed .BMP support