cluckfox / huc Goto Github PK
View Code? Open in Web Editor NEWThis project forked from uli/huc
Enhanced version of the PC Engine development system HuC
License: Other
This project forked from uli/huc
Enhanced version of the PC Engine development system HuC
License: Other
* 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)
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.