| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| wswan:index [2024/02/17 13:53] – asie | wswan:index [2025/11/18 21:21] (current) – asie |
|---|
| ====== wswan (WonderSwan/WonderWitch) ====== | ====== wswan (WonderSwan/WonderWitch) ====== |
| |
| The wswan target provides support for targetting the Bandai WonderSwan console. In addition, experimental support is provided for targetting the WonderWitch abstraction layer. | The wswan target provides support for targetting the Bandai WonderSwan console. In addition, experimental support is provided for targetting the WonderWitch OS via the ''wwitch'' target. |
| | |
| | * [[wswan:platform_overview|Platform overview]] |
| | * [[wswan:bugs|Known issues]] |
| |
| Currently supported languages include: | Currently supported languages include: |
| * **C** - via gcc-ia16, supporting up to the C11 standard with GNU extensions. | * **C** - via gcc-ia16, supporting up to the C11 standard with GNU extensions. |
| |
| ===== Overview ===== | ===== Packages ===== |
| |
| * [[wswan:platform_overview|Platform overview]] | * ''target-wswan'' - basic support metapackage |
| * [[wswan:bugs|Known bugs]] | |
| |
| ===== Subtargets ===== | ===== Documentation ===== |
| |
| The wswan target features multiple subtargets: | ==== Tutorial ==== |
| |
| * ''wswan/medium'' - create a ROM with multiple code segments, the default; | **This is very incomplete and only covers the absolute basics.** |
| * ''wswan/small'' - create a ROM with one code segment, slightly faster code but 64KB maximum code limit; | |
| * ''wswan/bootfriend'' - special subtarget for creating [[https://wonderful.asie.pl/ws/bootfriend/|BootFriend]] executables which execute from RAM. | |
| |
| In addition, there exists an experimental [[wswan:wwitch|wwitch]] subtarget for targeting the Freya abstraction layer. | * [[wswan:tutorial:development_environment|Development environment]] |
| | * [[wswan:tutorial:hello_display|Hello, Display!]] |
| |
| ===== Libraries ===== | ==== Library documentation ==== |
| |
| * [[https://wonderful.asie.pl/doc/libws/|libws]] - low-level hardware library | * [[https://wonderful.asie.pl/doc/libws/|libws]] - low-level hardware definitions and functions |
| * [[https://wonderful.asie.pl/doc/libwsx/|libwsx]] - high-level utility library | * [[https://wonderful.asie.pl/doc/libwsx/|libwsx]] - high-level utilities |
| * [[https://wonderful.asie.pl/doc/libww/|libww]] - WonderWitch API library | * [[https://wonderful.asie.pl/doc/libww/|libww]] - WonderWitch API wrapper, for the ''wwitch'' subtarget |
| | |
| ===== Guides ===== | |
| | |
| * These might become a tutorial one day (very work-in-progress): | |
| * [[wswan:tutorial:development_environment|Development environment]] | |
| * [[wswan:tutorial:hello_display|Hello, Display!]] | |
| |
| | ==== Guides ==== |
| |
| * [[wswan:guide:memory_management|Memory management]] - working with banks and segmentation, controlling memory locations | * [[wswan:guide:memory_management|Memory management]] - working with banks and segmentation, controlling memory locations |
| | * [[wswan:guide:optimization_v30mz|Optimizing for the NEC V30MZ CPU]] |
| | * [[wswan:guide:wfconfig|Project configuration]] - configuring the ROM header and others |
| * [[wswan:guide:interrupt_handlers|Writing interrupt handlers]] | * [[wswan:guide:interrupt_handlers|Writing interrupt handlers]] |
| * [[wswan:guide:c_assembly|Writing assembly]] - using the GNU assembler | * [[wswan:guide:c_assembly|Writing assembly]] - using the GNU assembler |
| * [[wswan:guide:c_calling_convention|C calling convention]] | * [[wswan:guide:c_calling_convention|C calling convention]] |
| * [[wswan:guide:c_inline_assembly|Writing inline C assembly]] | * [[wswan:guide:c_inline_assembly|Writing inline C assembly]] |
| * [[wswan:guide:wfconfig|wfconfig.toml]] - configuring the ROM header | * [[wswan:guide:pcv2_support|Pocket Challenge V2/pinstrap support]] |
| |
| ===== Other documentation ===== | ==== Toolchain documentation ==== |
| |
| * [[https://wonderful.asie.pl/doc/binutils-ia16/|binutils-ia16]] | * [[https://wonderful.asie.pl/doc/binutils-ia16/|binutils-ia16]] |
| * [[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-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/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 |
| | |
| | ==== Internal documentation ==== |
| | |
| | * [[wswan:guide:elf_quirks|ELF quirks]] |
| | |
| | ===== Subtargets ===== |
| | |
| | The wswan target features multiple subtargets: |
| | |
| | * ''wswan/medium'' - 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:wwitch|experimental subtarget]] ''wwitch'' for targeting the Freya abstraction layer used by the WonderWitch platform. |
| |
| ===== Other sources ===== | ===== Additional links ===== |
| |
| * [[https://ws.nesdev.org/wiki/Main_Page|WSdev Wiki]] - hardware documentation | * [[https://ws.nesdev.org/wiki/Main_Page|WSdev Wiki]] - hardware documentation |
| * [[https://github.com/WonderfulToolchain/awesome-wsdev|awesome-wsdev]] - link hub for WonderSwan-related homebrew projects | * [[https://github.com/WonderfulToolchain/awesome-wsdev|awesome-wsdev]] - link hub for WonderSwan-related homebrew projects |
| |