<?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 kirby64_the_crystal_shards</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:18:53+0000</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:eeprom&amp;rev=1616455265&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:entity_ids&amp;rev=1649777237&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:file_systems&amp;rev=1610061901&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:geometry_blocks&amp;rev=1597766094&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:level_settings_blocks&amp;rev=1617992302&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:levels&amp;rev=1610066564&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:music_ids&amp;rev=1638313982&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:rng&amp;rev=1614030351&amp;do=diff"/>
                <rdf:li rdf:resource="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:skybox_ids&amp;rev=1589729805&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=kirby64_the_crystal_shards:eeprom&amp;rev=1616455265&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-22T23:21:05+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>EEPROM</title>
        <link>https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:eeprom&amp;rev=1616455265&amp;do=diff</link>
        <description>EEPROM

Kirby 64 uses a 512 byte EEPROM chip to store save data.
Software mirrors of the data are kept at 0x800EC9F8 and 0x800ECBB0 in RAM.

High level structure
OffsetSizeDescription0x0000x0CHeader0x00C0x04Header checksum0x0100x54File 1 data0x0640x04</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:entity_ids&amp;rev=1649777237&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-12T15:27:17+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Entity IDs</title>
        <link>https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:entity_ids&amp;rev=1649777237&amp;do=diff</link>
        <description>Entity IDs

Inside the Level Settings block, all the entities are defined. Entities are spawned on screen when kirby gets within a certain range of them.
Each entity is defined by using the following struct.

Entity Struct


EntityStruct = {
   0x00: ('&gt;B','Node Num',1)
   0x01: ('&gt;B','Bank ID',1)
   0x02: ('&gt;B','Entity ID',1)
   0x03: ('&gt;B','Action',1)
   0x04: ('&gt;B','Respawn Flag',1)
   0x05: ('&gt;B','Spawn Flag',1)
   0x06: ('&gt;H','Eeprom',2)
   0x08: ('&gt;3f','Translation Vec3f',12)
   0x14: ('&gt;3…</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:file_systems&amp;rev=1610061901&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-07T23:25:01+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>File Systems</title>
        <link>https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:file_systems&amp;rev=1610061901&amp;do=diff</link>
        <description>File Systems

Kirby 64 uses a couple different addressing systems to point to resources in ROM.

Bank-index addressing

A “bank-index” is a 32-bit value containing a bank number and an index to refer to a block of data.
The upper 16 bits contain the bank number and the lower 16 bits contain the index.
The bank number selects the bank base address from an array, and the index number selects an offset from another array, and adds it to the base address.
Confusingly, there are (at least?) two disti…</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:geometry_blocks&amp;rev=1597766094&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-08-18T15:54:54+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Geometry blocks</title>
        <link>https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:geometry_blocks&amp;rev=1597766094&amp;do=diff</link>
        <description>Geometry blocks

Kirby 64's “Geometry blocks” are containers holding display lists, vertices, transformation data, and texture scroll settings for a group of meshes.
The high level structure of a geometry block is as follows (in order):

	*  HEADER</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:level_settings_blocks&amp;rev=1617992302&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-09T18:18:22+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Level Settings Block</title>
        <link>https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:level_settings_blocks&amp;rev=1617992302&amp;do=diff</link>
        <description>Level Settings Block

Every Area has its own Level Settings Block defined inside the Main Stage Table (see: Levels).
The level settings block defines the camera, pathing, collision, and entities spawned inside the stage. The Basic Structure of the Level Settings Block is as follows.</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:levels&amp;rev=1610066564&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-08T00:42:44+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Levels</title>
        <link>https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:levels&amp;rev=1610066564&amp;do=diff</link>
        <description>Levels

Each level loads a struct of areas using function 0x800F78E4.
The game uses this structure to find the pointer to the current area in the main stage table. Its located at 0x800be500.

Note: when used to select levels its bytes, but its stored in ram as words.</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:music_ids&amp;rev=1638313982&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-30T23:13:02+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Music</title>
        <link>https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:music_ids&amp;rev=1638313982&amp;do=diff</link>
        <description>Music

Each area in the game has a struct that defines the music played. Levels
Inside that struct the music ID for that area is defined. Below is a list of all the Music IDs

----------

	*  0x0: no change/no music
	*  0x1: Boss
	*  0x2: Battle
	*  0x3: Dance Long</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:rng&amp;rev=1614030351&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-22T21:45:51+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>RNG</title>
        <link>https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:rng&amp;rev=1614030351&amp;do=diff</link>
        <description>RNG

Kirby 64 uses two types of random number generators in game:

	*  A “soft” RNG which iterates through a set of 1024 predetermined 8-bit values, and

	*  A “hard” RNG which is your typical seeded pseudo-random number generator.

The soft RNG seed (i.e. the current index of the soft RNG array at</description>
    </item>
    <item rdf:about="https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:skybox_ids&amp;rev=1589729805&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-17T15:36:45+0000</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Skybox IDs</title>
        <link>https://www.hack64.net/wiki/doku.php?id=kirby64_the_crystal_shards:skybox_ids&amp;rev=1589729805&amp;do=diff</link>
        <description>Skybox IDs

The skybox IDs are defined inside the main stage table: Levels at the struct value of 0x8.
Skybox's are a combination of several different layers of graphics, and each part can be scaled differently. It seems different
combinations of those effects are used and composted into a single skybox ID, creating many multples.
When the skybox doesn't completely cover the background, you can use the struct value 0xA in the main stage table to give a
background color.
It is not currently known…</description>
    </item>
</rdf:RDF>
