User Tools

Site Tools


wswan:index

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
wswan:index [2024/04/20 18:12] asiewswan:index [2025/11/18 21:21] (current) asie
Line 1: Line 1:
 ====== 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:
Line 7: Line 10:
   * **assembly** - via binutils-ia16's GNU assembler, using Intel-style opcodes and syntax;   * **assembly** - via binutils-ia16's GNU assembler, using Intel-style opcodes and syntax;
   * **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 ===== 
- 
-  * [[wswan:platform_overview|Platform overview]] 
-  * [[wswan:bugs|Known bugs]] 
  
 ===== Packages ===== ===== Packages =====
Line 17: Line 15:
   * ''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; +**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 [[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 wrapperfor 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|HelloDisplay!]] +
- +
- +
-  * [[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:optimization_v30mz|Optimizing for the NEC V30MZ CPU]]   * [[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]]
Line 62: Line 51:
     * [[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
  
wswan/index.1713636749.txt.gz · Last modified: by asie