<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://www.hack64.net/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://www.hack64.net/wiki/feed.php">
        <title>Hack64 Wiki yoshis_story</title>
        <description></description>
        <link>https://www.hack64.net/wiki/</link>
        <image rdf:resource="https://www.hack64.net/wiki/lib/tpl/dokuwiki/images/favicon.ico" />
       <dc:date>2026-04-04T21:24:30+0000</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=yoshis_story:data_diagram&amp;rev=1570209299&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=yoshis_story:file_system&amp;rev=1570209109&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=yoshis_story:level_data&amp;rev=1570209035&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=yoshis_story:object_data&amp;rev=1570209075&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=yoshis_story:object_ids&amp;rev=1570209327&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=yoshis_story:overlay_files&amp;rev=1570209253&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=yoshis_story:smsr00_compression&amp;rev=1570209157&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://www.hack64.net/wiki/lib/tpl/dokuwiki/images/favicon.ico">
        <title>Hack64 Wiki</title>
        <link>https://www.hack64.net/wiki/</link>
        <url>https://www.hack64.net/wiki/lib/tpl/dokuwiki/images/favicon.ico</url>
    </image>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=yoshis_story:data_diagram&amp;rev=1570209299&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-10-04T17:14:59+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Level/Object Data Diagram</title>
        <link>https://www.hack64.net/wiki/doku.php?id=yoshis_story:data_diagram&amp;rev=1570209299&amp;do=diff</link>
        <description>Level/Object Data Diagram

Here is a diagram of this game's pointer spaghetti.</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=yoshis_story:file_system&amp;rev=1570209109&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-10-04T17:11:49+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>File System</title>
        <link>https://www.hack64.net/wiki/doku.php?id=yoshis_story:file_system&amp;rev=1570209109&amp;do=diff</link>
        <description>File System

----------

ROM &quot;bank-offset&quot; addressing

Yoshi's Story uses 32-bit “bank-offsets” to point to resources in ROM. The bank table is located at 0x000A79D4 in ROM (0x800A6DD4 in RAM) as an array of bank base addresses. There are 16 available slots for bank addresses, but only bank numbers 0x00, 0x03, and 0x04 seem to be used by the game.</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=yoshis_story:level_data&amp;rev=1570209035&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-10-04T17:10:35+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Level Data</title>
        <link>https://www.hack64.net/wiki/doku.php?id=yoshis_story:level_data&amp;rev=1570209035&amp;do=diff</link>
        <description>Level Data

The main level list is at 0x000A84A0 in ROM as an array of 177 “LevelEntry” structs.

LevelEntry struct

This struct simply points to a LevelInfo struct.


struct LevelEntry
{
    /*00*/ u32 unk00;
    /*04*/ u32 boLevelInfo; // bank-offset of LevelInfo struct
};</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=yoshis_story:object_data&amp;rev=1570209075&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-10-04T17:11:15+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Object Data</title>
        <link>https://www.hack64.net/wiki/doku.php?id=yoshis_story:object_data&amp;rev=1570209075&amp;do=diff</link>
        <description>Object Data

The object lookup table is at 0x000A1C90 in ROM as an array of 1582 ObjectEntry structs.

ObjectEntry struct


struct ObjectEntry
{
    /*00*/ u16 objectId;  // unique identifier
    /*02*/ u16 unk02;     // probably padding
    /*04*/ u32 boObjectDefA; // bank-offset of ObjectDefA struct
    /*08*/ u32 boObjectDefB; // bank-offset of ObjectDefB struct
};</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=yoshis_story:object_ids&amp;rev=1570209327&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-10-04T17:15:27+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Object IDs</title>
        <link>https://www.hack64.net/wiki/doku.php?id=yoshis_story:object_ids&amp;rev=1570209327&amp;do=diff</link>
        <description>Object IDs

Below is an incomplete list of descriptions for each object ID. 
IDDescription0x4001Yoshi spawn point0x4002Yoshi egg0x4003? (exporter corrupted texture)0x4004Yoshi egg0x4005Yoshi egg0x4006Happy yoshi0x4010? (exporter corrupted texture)0x4011</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=yoshis_story:overlay_files&amp;rev=1570209253&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-10-04T17:14:13+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Overlay Files</title>
        <link>https://www.hack64.net/wiki/doku.php?id=yoshis_story:overlay_files&amp;rev=1570209253&amp;do=diff</link>
        <description>Overlay Files

Yoshi's Story uses overlays to save memory. The structure of an overlay file is as follows:


u8  text[textSize]
u8  data[dataSize]
u8  rodata[rodataSize]
meta {
    u32 textSize
    u32 dataSize
    u32 rodataSize
    u32 bssSize
    u32 numRelocations
    u32 relocations[numRelocations]
}
u32 metaSize</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=yoshis_story:smsr00_compression&amp;rev=1570209157&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2019-10-04T17:12:37+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>SMSR00 Compression</title>
        <link>https://www.hack64.net/wiki/doku.php?id=yoshis_story:smsr00_compression&amp;rev=1570209157&amp;do=diff</link>
        <description>SMSR00 Compression

Yoshi's Story uses an LZ77-type compression format called SMSR00 which is very similar to SM64's MIO0 format. In the Yoshi's Story ROM, each SMSR00 block is preceded by a 16-byte 'CMPR' header which contains the size of the encoded block and its destination size.</description>
    </item>
</rdf:RDF>
