Enhanced version of the PC Engine development system HuC
License
uli/huc
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
master
Could not load branches
Nothing to show
Could not load tags
Nothing to show
{{ refName }}
default
Code
-
Clone
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.
- Open with GitHub Desktop
- Download ZIP
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Added Bin packing with sort list to proc bank assignment
52a556a
Git stats
Files
Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
* 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 interrupt handlers implemented in C - 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 - no support for MinGW (Windows users are recommended to use Cygwin) 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)
About
Enhanced version of the PC Engine development system HuC
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published