====== wswan ====== The wswan target provides support for targetting the **Bandai WonderSwan** console. In addition, experimental support is provided for targetting the **WonderWitch** environment via the ''wwitch'' target. * [[wswan:platform_overview|Platform overview]] * [[wswan:bugs|Known issues]] Currently supported languages include: * **C** - via gcc-ia16, supporting up to the C11 standard with GNU extensions, * **assembly** - via binutils-ia16's GNU assembler. ===== Packages ===== * ''target-wswan'' - basic support metapackage ===== Additional documentation ===== ==== Library references ==== * [[https://wonderful.asie.pl/doc/libws/|libws]] - low-level hardware definitions and functions * [[https://wonderful.asie.pl/doc/libwsx/|libwsx]] - high-level utilities * [[https://wonderful.asie.pl/doc/libww/|libww]] - WonderWitch API wrapper, for the ''wwitch'' subtarget ==== Toolchain documentation ==== * [[https://wonderful.asie.pl/doc/binutils-ia16/|binutils-ia16]] * [[https://wonderful.asie.pl/doc/binutils-ia16/as.html|as Assembler]] * [[https://wonderful.asie.pl/doc/binutils-ia16/ld.html|ld Linker]] * [[https://wonderful.asie.pl/doc/gcc-ia16/gcc-6.3.0/gcc/|gcc-ia16 6.3.0]] - C compiler * [[https://wonderful.asie.pl/doc/gcc-ia16/gcc-6.3.0/gcc/IA_002d16-Options.html|IA-16 Options]] * [[https://wonderful.asie.pl/doc/gcc-ia16/gcc-6.3.0/gcc/Named-Address-Spaces.html#IA_002d16-Named-Address-Spaces-1|IA-16 Named Address Spaces]] * [[https://wonderful.asie.pl/doc/gcc-ia16/gcc-6.3.0/gcc/IA_002d16-Function-Attributes.html|IA-16 Function Attributes]] * [[https://wonderful.asie.pl/doc/gcc-ia16/gcc-6.3.0/gcc/IA_002d16-Built_002din-Functions.html|IA-16 Built-in Functions]] * [[https://wonderful.asie.pl/doc/gcc-ia16/gcc-6.3.0/gcc/Machine-Constraints.html|IA-16 Machine Constraints]] (inline assembly) * [[https://wonderful.asie.pl/doc/gcc-ia16/gcc-6.3.0/cpp/|gcc-ia16 cpp 6.3.0]] - C preprocessor ==== Various notes ==== * [[wswan:guide:memory_management|Memory management]] - working with banks and segmentation, controlling memory locations * [[wswan:guide:wfconfig|Project configuration]] - configuring the ROM header and others * [[wswan:guide:interrupt_handlers|Writing interrupt handlers]] ==== Design notes ==== * [[wswan:guide:elf_quirks|ELF quirks]] ===== Subtargets ===== The wswan target features multiple subtargets: * ''wswan/medium'' (default) - create a ROM with multiple code segments, the default, stack and static data stored in IRAM; * ''wswan/small'' - create a ROM with one code segment, slightly faster code but 64KB maximum code limit, stack and static data stored in IRAM; * ''wswan/medium-sram'' (experimental) - create a ROM with multiple code segments, stack stored in IRAM, static data stored in SRAM; * ''wswan/small-sram'' (experimental) - create a ROM with one code segment, stack stored in IRAM, static data stored in SRAM; * ''wswan/bootfriend'' - special subtarget for creating [[https://wonderful.asie.pl/ws/bootfriend/|BootFriend]] executables which execute from RAM. In addition, there exists an [[wswan:guide:wwitch|experimental subtarget]] ''wwitch'' for targeting the Freya abstraction layer used by the WonderWitch platform. ===== Additional links ===== * [[https://ws.nesdev.org/wiki/Main_Page|WSdev Wiki]] - hardware documentation * [[https://codeberg.org/WonderfulToolchain/awesome-wsdev|awesome-wsdev]] - link hub for WonderSwan-related homebrew projects