* wip: New assets system tm
Builds gc-eu-mq-dbg OK from clean after
1) make setup
2) python3 -m tools.assets.extract -j
3) replace 0x80A8E610 with sShadowTex in extracted/gc-eu-mq-dbg/assets/overlays/ovl_En_Jsjutan/sShadowMaterialDL.inc.c
4) make various symbols in extracted data like sTex static
* use variables from config.yml for gMtxClear and sShadowTex addresses
* Write source with static for overlays using `HACK_IS_STATIC_ON` hack
* gc-eu-mq-dbg OK from clean with `make setup && make`
* implement more skeleton-related types, cleanups, fixups
* fix extracted data to no longer produce compilation warnings
* implement more of RoomShapeImage types
* yeet XmlPath from ExternalFile usage
* Implement PlayerAnimationDataResource (link_animetion data)
* fix csdis CS_TIME extra arg
* dmadata file names no longer hardcoded for gc-eu-mq-dbg
* ntsc-1.0 OK
* xml fixes
* slightly improve standard output
* rm extract_assets.py
* generate and use Limb enums (TODO: check Skin skels and implement for Curve skels)
* handle dependencies between xmls
* introduce RawPointers xml attribute to ignore specific pointers and keep them raw
* add tools/extract_assets.sh
* fixups
* only extract if xmls changed or if -f (force) is used
* fixups, gc-eu OK
* all versions OK
* check attributes of xml resources elements
* Implement legacy skelanime resources
* fix ASSET_FILES_BIN_EXTRACTED/COMMITTED: look for .u8.bin specifically instead of just .bin
* implement JFIFResource
* fix png/jpg wildcards: look specifically for .u64.png .u32.png .u64.jpg
* Makefile: Add rules to build .png, .bin and .jpg in assets/ too
* start writing actual docs
* extract sTransCircleDL and sTransWipeDL
* misc cleanup/fixes, pygfxd 1.0.3
* refactor CDataExt.set_write callback args to use a dataclass
* Move {} to in-source
* misc
* more progress on spec
* fix missing braces in n64dd_error_textures.c
* finish xml spec doc
* assets xmls fixes
* some cleanup, use `gNameTex_WIDTH/HEIGHT` macros in dlists
* handle hackmode_syotes_room, fix compile
* C build_from_png
* rm tools/assets/bin2c
* rm ZAPD
* format
* remove rule to generate dmadata_table.py
* CC0 license (and some import cleanup)
* dont try to build zapd (rmd)
* simplify palettes with single user (ci images with a non-shared palette)
* add docs on how images are handled
* bss
* allow -j N
* fix n64texconv python bindings memory management
* move -j at the end of calling extraction script
* with -j, update last_extracts.json as each job completes rather than only if all complete
* make interrupting less jank by making child processes ignore sigint
* use enum names in `SCENE_CMD_SKYBOX_SETTINGS`
* `multiprocessing.get_context("fork")`
* import rich, except ImportError s
* fix optional rich usage
* .bss
* .bss
* .bss
* assets extraction: -j -> -j$(N_THREADS)
* .bss
* change LIMB_NONE/MAX defaults to be FILE_OFFSET instead of SKELNAME
* 0XHEX -> 0xHEX
* fix bss
* Proper includes for assets
mostly proper, some includes like dlists resources always causing a sys_matrix.h include (when not every dlist references gIdentityMtx) could be done better
* rm z64.h
* rm z64.h take two
* bss
* Make .u64 suffix for pngs optional
* fixup: rm .u64 suffix from n64dd image paths
* Remove elemtype suffixes from .bin and .jpg files
* Update images.md
* some build_from_png cleanup, more error handling, comments
* Handle skybox textures
Introduce "sub-format" suffix for pngs, with sub-formats split_lo and split_hi being used for skybox textures
* fixup for older python
* improve collision output some
* fully use SURFACETYPE[01] macros in writing extracted surface types
* use WATERBOX_PROPERTIES in extracted waterboxes
* some SceneCommandsResource cleanup
* format EnvLightSettingsList output
* n64texconv and bin2c
* mv tools/n64texconv tools/assets/
* fix
* more light fixes
* Silence -Wshadow for libimagequant
* Add reference counting gc for palette objects in python bindings
* Fix missing alignment in n64texconv_*_to_c functions
Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
* Check palette size in n64texconv_image_from_png
* accept memoryview as well as bytes for binary data
* minimal doc on n64texconv_quantize_shared
* fix a buffer size passed to libimagequant
* assert pal count <= 256 on png write
* Disable palette size check for input pngs, ZAPD fails the check
* No OpenMP for clang
* When reading an indexed png into a CI format, requantize if there are too many colors for the target texel size
---------
Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
Note about comments in these files:
The libultra audio library was originally available to developers in
source code form, unlike most of libultra. These files are based on
these source code forms, adapted to meet the style of this project.
The comments in the files as of this commit are, apart from the style,
comments from the original SGI authors.
* [iQue] z_sram: Use iQue-specific read/write macros
* [iQue] z_sram: Make checksum a struct
* [iQue] z_sram: Finish matching
* Call the trigraph usage a bug
* Fix bss
* Sram_iQueReadWrite -> Sram_ReadWriteIQue
* Use SRAM_HEADER_MAGIC for loop bound
* Rename sZeldaMagic -> sSramDefaultHeader and use less char literals
* Update spec for iQue
* Use CPP includes for spec overlays, scenes, and libultra
* Fix iQue + DEBUG_FEATURES
* Define BBPLAYER, merge function definitions
* Add Makefile dependency on spec_includes
* Fix libc order for iQue
* Match src/libultra/bb/sa/common.c to fix linker errors
* Use C versions of getcount/setcompare for iQue
* Format
* Small fixes to line up boot segment
* Remove zlib.c
* [iQue] Match handwritten asm files in libultra/os, match C replacements of osGetCount and __osSetCompare
* Format
* Adjust some label names in dcache functions
* as0
* Fix ASOPTFLAGS for src/libc, remove unnecessary noreorder region in kanread
* Suggested changes
* Use %half to load the boot bss size for matching
Co-authored-by: cadmic <cadmic24@gmail.com>
* Wrap all of __osProbeTLB in noreorder
---------
Co-authored-by: cadmic <cadmic24@gmail.com>
* Match iQue compression
* Use a dict
* Use Makefile variables for compression settings
* Put COMPRESS_ARGS last
* Pad iQue ROMs to 16 KiB
* Replace --pad-rom with --pad-to and --fill-padding-bytes
* Clarify --fill-padding-bytes
* iQue text extraction
* More consistent terminology
* Fixes for jpn, split each encoding into a separate charmap file, merge enc.nes.h and enc.chn.h
* Merge nes and chn in DEFINE_MESSAGE macros
* Remove redundant defines in nes_message_data_static
* Move build.c definitions to the makefile, introduce and use libultra version defines in libultra instead of PLATFORM defines
* MAJOR+MINOR versions -> VERSION+PATCH, stringify build defines in makefile, let the libultra version determine the OPTFLAGS for libultra files
* Clang format moment
* Remove LIBULTRA_VERSION_ID, tweak OS_VERSION and libultra version definitions
* Better fix for formatting problems
* Introduce afile_sizes, generate headers of sizes for soundfonts and sequences
* Initial tools/audio README
* Versioning for samplebank extraction
* Clean up the disassemble_sequence.py runnable interface
* Add static assertions for maximum bank sizes
* Boost optimization for audio tools
* Samplebank XML doc
* Soundfont XML doc
* More docs in sampleconv for vadpcm
* Various tools fixes/cleanup
* VADPCM doc
* Try to fix md formatting
* VADPCM doc can come later
* Fix merge with PR 9
* Fix blobs from MM
* Try to fix bss
* Try fix bss round 2
* Fix sampleconv memset bug
* Suggested documentation tweaks