| Both sides previous revisionPrevious revision | |
| wswan:index [2025/11/18 21:18] – 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:platform_overview|Platform overview]] |
| * ''target-wswan'' - basic support metapackage | * ''target-wswan'' - basic support metapackage |
| |
| ===== Subtargets ===== | ===== Documentation ===== |
| |
| The wswan target features multiple subtargets: | ==== Tutorial ==== |
| |
| * ''wswan/medium'' - create a ROM with multiple code segments, the default, stack and static data stored in IRAM; | **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, 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. | * [[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 |
| * [[https://wonderful.asie.pl/doc/libwwcl/|libwwcl]] - WonderWitch compatibility layer | |
| | |
| ===== Guides ===== | |
| | |
| * These might become a tutorial one day (very work-in-progress): | |
| * [[wswan:tutorial:development_environment|Development environment]] | |
| * [[wswan:tutorial:hello_display|Hello, Display!]] | |
| | |
| | |
| * [[wswan:guide:porting_wwitch|Porting WonderWitch applications to standalone programs]] - the ''libwwcl'' WonderWitch compatibility layer | |
| |
| | ==== 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: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:elf_quirks|ELF quirks]] | |
| |
| |
| |
| * [[wswan:guide:pcv2_support|Pocket Challenge V2/pinstrap support]] | * [[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/cpp/|gcc-ia16 cpp 6.3.0]] - C preprocessor | * [[https://wonderful.asie.pl/doc/gcc-ia16/gcc-6.3.0/cpp/|gcc-ia16 cpp 6.3.0]] - C preprocessor |
| |
| ===== Other sources ===== | ==== 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. |
| | |
| | ===== 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 |
| |