<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wonderful.asie.pl/wiki/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wonderful.asie.pl/wiki/feed.php">
        <title>Wonderful Toolchain Wiki - wswan:guide</title>
        <description></description>
        <link>https://wonderful.asie.pl/wiki/</link>
        <image rdf:resource="https://wonderful.asie.pl/wiki/lib/exe/fetch.php?media=wiki:logo.png" />
       <dc:date>2026-04-27T14:50:59+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:c_assembly&amp;rev=1767185992&amp;do=diff"/>
                <rdf:li rdf:resource="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:c_calling_convention&amp;rev=1708167284&amp;do=diff"/>
                <rdf:li rdf:resource="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:c_inline_assembly&amp;rev=1708167094&amp;do=diff"/>
                <rdf:li rdf:resource="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:elf_quirks&amp;rev=1727006301&amp;do=diff"/>
                <rdf:li rdf:resource="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:interrupt_handlers&amp;rev=1762528445&amp;do=diff"/>
                <rdf:li rdf:resource="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:memory_management&amp;rev=1755253983&amp;do=diff"/>
                <rdf:li rdf:resource="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:optimization&amp;rev=1770835997&amp;do=diff"/>
                <rdf:li rdf:resource="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:pcv2_support&amp;rev=1767186620&amp;do=diff"/>
                <rdf:li rdf:resource="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:porting_wwitch&amp;rev=1767887858&amp;do=diff"/>
                <rdf:li rdf:resource="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:wfconfig&amp;rev=1756668484&amp;do=diff"/>
                <rdf:li rdf:resource="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:wwitch&amp;rev=1767887874&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wonderful.asie.pl/wiki/lib/exe/fetch.php?media=wiki:logo.png">
        <title>Wonderful Toolchain Wiki</title>
        <link>https://wonderful.asie.pl/wiki/</link>
        <url>https://wonderful.asie.pl/wiki/lib/exe/fetch.php?media=wiki:logo.png</url>
    </image>
    <item rdf:about="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:c_assembly&amp;rev=1767185992&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-31T12:59:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>c_assembly</title>
        <link>https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:c_assembly&amp;rev=1767185992&amp;do=diff</link>
        <description>Writing assembly

In the Wonderful toolchain, assembly files use the .s extension. They are compiled using the GNU assembler and the C preprocessor.

Creating an assembly file

It is recommended to start with a preamble similar to the following:



	*</description>
    </item>
    <item rdf:about="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:c_calling_convention&amp;rev=1708167284&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-17T10:54:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>c_calling_convention</title>
        <link>https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:c_calling_convention&amp;rev=1708167284&amp;do=diff</link>
        <description>C calling convention

A C compiler typically defines a calling convention - a set of rules used for mapping C function arguments and return values to the CPU&#039;s registers and stack, allowing
the caller (the function making the call) and the callee (the function being called) to put and retrieve data from the same locations.</description>
    </item>
    <item rdf:about="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:c_inline_assembly&amp;rev=1708167094&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-17T10:51:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>c_inline_assembly</title>
        <link>https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:c_inline_assembly&amp;rev=1708167094&amp;do=diff</link>
        <description>Writing C inline assembly

The gcc-ia16 compiler supports inline assembly written with the AT&amp;T syntax using the __asm keyword.

Most standalone source code in the Wonderful toolchain uses the Intel syntax instead.

For example, to enable CPU interrupts, we could write the following function:</description>
    </item>
    <item rdf:about="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:elf_quirks&amp;rev=1727006301&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-09-22T11:58:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>elf_quirks</title>
        <link>https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:elf_quirks&amp;rev=1727006301&amp;do=diff</link>
        <description>wswan toolchain ELF quirks

The ELF format created by Wonderful has some quirks, owing both to the non-upstream binutils fork used and to the specifics of the ROM format itself.

In general, gcc-ia16 ELF files follow the 32-bit x86 ELF format.

Segment relocations</description>
    </item>
    <item rdf:about="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:interrupt_handlers&amp;rev=1762528445&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-07T15:14:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>interrupt_handlers</title>
        <link>https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:interrupt_handlers&amp;rev=1762528445&amp;do=diff</link>
        <description>Writing interrupt handlers

C interrupt handlers

For less performance-sensitive interrupts (such as the vertical blank interrupt), it is possible to write the relevant handlers using only C. This is done by marking the interrupt function with special attributes:</description>
    </item>
    <item rdf:about="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:memory_management&amp;rev=1755253983&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-15T10:33:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>memory_management</title>
        <link>https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:memory_management&amp;rev=1755253983&amp;do=diff</link>
        <description>Memory management

The WonderSwan poses unique challenges for implementing a robust memory management system:

	*  The unified memory architecture places display and audio data in shared RAM with the CPU, however its restrictions lead to harsh alignment requirements, and thus the need for non-contiguous memory allocation in RAM.</description>
    </item>
    <item rdf:about="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:optimization&amp;rev=1770835997&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-11T18:53:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>optimization</title>
        <link>https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:optimization&amp;rev=1770835997&amp;do=diff</link>
        <description>Optimizing programs

This page serves as a loose list of advice for getting the most out of the WonderSwan.

Optimizing C code

Optimizing for code speed

To optimize for speed, compile your code with -O2.

Optimizing for code size

To optimize for size, compile your code with</description>
    </item>
    <item rdf:about="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:pcv2_support&amp;rev=1767186620&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-31T13:10:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>pcv2_support</title>
        <link>https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:pcv2_support&amp;rev=1767186620&amp;do=diff</link>
        <description>Pocket Challenge V2

Pocket Challenge V2 differs from the mono WonderSwan in two ways:

	*  Most boot ROM execution is skipped and the code entry point is different. This is referred to as using the “pinstrap” entry point.
	*  The input button layout is different.</description>
    </item>
    <item rdf:about="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:porting_wwitch&amp;rev=1767887858&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-08T15:57:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>porting_wwitch</title>
        <link>https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:porting_wwitch&amp;rev=1767887858&amp;do=diff</link>
        <description>Porting WonderWitch applications

WonderWitch applications compiled using the official Qute SDK require a copy of FreyaOS (and FreyaBIOS) to run. Unfortunately, nowadays a loose WonderWitch cartridge required to run such programs can go for as much as $100 on the second-hand market, with the full SDK fetching prices above $200 - much more than the console itself. This makes not just creating, but even running WonderWitch applications inaccessible to most hobbyists.</description>
    </item>
    <item rdf:about="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:wfconfig&amp;rev=1756668484&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-31T19:28:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wfconfig</title>
        <link>https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:wfconfig&amp;rev=1756668484&amp;do=diff</link>
        <description>Project configuration

wfconfig.toml

wfconfig.toml serves as a project-wide configuration file.

[cartridge]

This section describes the cartridge header of the output .ws/.wsc file.

The following fields can affect cartridge loaders and/or the boot ROM, and thus should be configured correctly:</description>
    </item>
    <item rdf:about="https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:wwitch&amp;rev=1767887874&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-08T15:57:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>wwitch</title>
        <link>https://wonderful.asie.pl/wiki/doku.php?id=wswan:guide:wwitch&amp;rev=1767887874&amp;do=diff</link>
        <description>Developing for WonderWitch

The WonderWitch is an official homebrew development environment provided by Qute Corporation.

As the official toolchain is proprietary, Wonderful provides its own toolchain for the platform, allowing use of both BIOS system calls and direct hardware access.</description>
    </item>
</rdf:RDF>
